co je page faults

Otázka od: david.kopecek@hacktrack.com

10. 11. 2004 20:56

Zdravim

mam aplikaci psanou v delphi a podle task manageru ma asi 6000000 page
faults objektu ?. nevite cim vznikaji v delphi aplikacich a jak je
odstranovat

--
S pozdravem,
 david
 david.kopecek@hacktrack.com



Odpovedá: Jiri Foldyna

11. 11. 2004 10:47

> mam aplikaci psanou v delphi a podle task manageru ma asi 6000000 page
> faults objektu ?. nevite cim vznikaji v delphi aplikacich a jak je
> odstranovat

Ahoj,
nevim, jestli oba myslime totez, ale page fault = chyba stranky vznika pri
pozadavku na pristup k nenamapovane strance. Pro memory manager je to signal
k nacteni stranky bud ze swapu nebo ze souboru a je to normalni provozni
stav memory manazeru. Jejich pocet zavisi mimo jine i na celkove velikosti
pameti a na dobe, po kterou aplikace bezi. Obecne lze rici, ze cim vice
pameti alokujes, tim vetsi je sance na page fault, pokud alokujes (a
pristupujes k ni) vice nez je fyzicka velikost, pak page faults prudce
pribyvaji. Snadno to otestujes tak, ze si vyvoris velkou matici - treba
array [0..1000000,0.1000000] of integer (pozor, potrebuje cca 4 GB virtualni
pameti !) , do kazde bunky zapises jine cislo a pak je nahodne ctes. Pokud
mas treba 1 GB fyzicke pameti, pak statisticky kazde 3-4 cteni vyvola page
fault.

Zdravim

Jiri Foldyna



Odpovedá: david.kopecek@hacktrack.com

11. 11. 2004 14:52

Dobry den,
11. listopadu 2004, 10:47:39, napsal jste:

>> mam aplikaci psanou v delphi a podle task manageru ma asi 6000000 page
>> faults objektu ?. nevite cim vznikaji v delphi aplikacich a jak je
>> odstranovat

JF> Ahoj,
JF> nevim, jestli oba myslime totez, ale page fault = chyba stranky vznika pri
JF> pozadavku na pristup k nenamapovane strance. Pro memory manager je to
signal
JF> k nacteni stranky bud ze swapu nebo ze souboru a je to normalni provozni
JF> stav memory manazeru. Jejich pocet zavisi mimo jine i na celkove velikosti
JF> pameti a na dobe, po kterou aplikace bezi. Obecne lze rici, ze cim vice
JF> pameti alokujes, tim vetsi je sance na page fault, pokud alokujes (a
JF> pristupujes k ni) vice nez je fyzicka velikost, pak page faults prudce
JF> pribyvaji. Snadno to otestujes tak, ze si vyvoris velkou matici - treba
JF> array [0..1000000,0.1000000] of integer (pozor, potrebuje cca 4 GB
virtualni
JF> pameti !) , do kazde bunky zapises jine cislo a pak je nahodne ctes. Pokud
JF> mas treba 1 GB fyzicke pameti, pak statisticky kazde 3-4 cteni vyvola page
JF> fault.

a da se tomu nejak efektivne branit ?

--
S pozdravem,
 david
 david.kopecek@hacktrack.com



Odpovedá: Jiri Foldyna

11. 11. 2004 17:56

> JF> Ahoj,
> JF> nevim, jestli oba myslime totez, ale page fault = chyba
> stranky vznika pri
> JF> pozadavku na pristup k nenamapovane strance. Pro memory
> manager je to signal
> JF> k nacteni stranky bud ze swapu nebo ze souboru a je to
> normalni provozni
> JF> stav memory manazeru. Jejich pocet zavisi mimo jine i na
> celkove velikosti
> JF> pameti a na dobe, po kterou aplikace bezi. Obecne lze
> rici, ze cim vice
> JF> pameti alokujes, tim vetsi je sance na page fault, pokud
> alokujes (a
> JF> pristupujes k ni) vice nez je fyzicka velikost, pak page
> faults prudce
> JF> pribyvaji. Snadno to otestujes tak, ze si vyvoris velkou
> matici - treba
> JF> array [0..1000000,0.1000000] of integer (pozor, potrebuje
> cca 4 GB virtualni
> JF> pameti !) , do kazde bunky zapises jine cislo a pak je
> nahodne ctes. Pokud
> JF> mas treba 1 GB fyzicke pameti, pak statisticky kazde 3-4
> cteni vyvola page
> JF> fault.
>
> a da se tomu nejak efektivne branit ?

Jedine nepouzivat virtual memory management  . Page fault neni chyba v
beznem slova smyslu, je to prostredek, kterym procesor upozornuje OS na
potrebu zavest do pameti prislusnou cast kodu/dat z disku. Nazev je trochu
matouci, proto se spise pouziva preklad "vypadek stranky".

Zdravim

Jiri Foldyna